package com.zhongfl.crm.mail.bean;

import com.zhongfl.crm.mail.enums.MailTypeEnum;

import java.io.File;
import java.util.HashMap;
import java.util.Objects;

/**
 * @author wang.yuchuan
 * @date 2018/6/26
 */
public class MailMessageBuilder {

    private MailMessage mailMessage;

    public static MailMessageBuilder builder() {
        MailMessageBuilder mailMessageBuilder = new MailMessageBuilder();

        mailMessageBuilder.mailMessage = new MailMessage();

        return mailMessageBuilder;
    }

    public MailMessageBuilder mailTypeEnum(MailTypeEnum mailTypeEnum) {
        this.mailMessage.setTemplateEnum(mailTypeEnum);
        return this;
    }

    public MailMessageBuilder to(String[] to){
        this.mailMessage.setTo(to);
        return this;
    }

    public MailMessageBuilder subject(String subject) {
        this.mailMessage.setSubject(subject);
        return this;
    }

    public MailMessageBuilder addData(String key, Object value) {
        if(Objects.isNull(this.mailMessage.getModels())){
            this.mailMessage.setModels(new HashMap<>());
        }
        this.mailMessage.getModels().put(key, value);
        return this;
    }

    public MailMessageBuilder addFile(String key, File value) {
        if(Objects.isNull(this.mailMessage.getFiles())){
            this.mailMessage.setFiles(new HashMap<>());
        }
        this.mailMessage.getFiles().put(key, value);
        return this;
    }

    public MailMessage build() {
        return this.mailMessage;
    }
}
